package com.wang.friend.service;

import com.wang.friend.domain.exam.dto.ExamQueryDTO;
import com.wang.friend.domain.exam.dto.ExamRankDTO;
import com.wang.common.core.domain.TableDataInfo;
import com.wang.friend.domain.exam.vo.ExamVO;

import java.util.List;

public interface IExamService {

    /**
     * 从库中获取竞赛列表的信息 (包含历史竞赛和未完赛的竞赛)
     * @param examQueryDTO 包含查询关键字和竞赛类型
     * @return 返回指定页码的竞赛列表
     */
    List<ExamVO> list(ExamQueryDTO examQueryDTO);

    /**
     * 从缓存中查询竞赛列表 (只能查询指定类型的竞赛)
     * @param examQueryDTO 竞赛请求参数
     * @return 返回指定页码的信息
     */
    TableDataInfo redisList(ExamQueryDTO examQueryDTO);

    /**
     * 获取竞赛中的第一道题目
     * @param examId 竞赛id
     * @return 返回竞赛第一题的id
     */
    String getFirstQuestion(Long examId);

    /**
     * 获取当前题目的前一题
     *
     * @param examId 当前竞赛id
     * @param questionId 当前题目id
     * @return 返回前一题的id
     */
    String preQuestion(Long examId,Long questionId);

    /**
     * 获取当前题目的后一题
     * @param examId 当前竞赛id
     * @param questionId 当前题目id
     * @return 返回后一题的id
     */
    String nextQuestion(Long examId,Long questionId);

    /**
     * 获取指定竞赛的排名列表
     * @param examRankDTO 竞赛id
     * @return 返回竞赛排名列表
     */
    TableDataInfo rankList(ExamRankDTO examRankDTO);
}
